FindingPheno demonstration

Wednesday, October 8, 2025

Challenges

Lack of…

  1. robust methods for multi-table data
  2. standardized, user-friendly approaches
  3. linkage between data resources and analytical workflows
FindingPheno logo.

1. Robust methods for multi-table data

  • Community-driven open-source project
  • High-quality, tested statistical methods
  • Well-documented
Bioconductor logo.

SummarizedExperiment

(Huber et al. 2015)

SummarizedExperiment class

2. Standardized, user-friendly approaches

  • Methods for microbiome data science
  • Online book
  • Graphical user interface

mia logo.

3. Linkage between data resources and analytical workflows

Demonstration

# Get data from HoloFood database
mae <- HoloFoodR::getResult(ids)

# Get data from HoloFood database
mae <- HoloFoodR::getResult(ids)

# Get data from MGnify database
tse <- MGnifyR::getResult(ids)

# Get data from HoloFood database
mae <- HoloFoodR::getResult(ids)

# Get data from MGnify database
tse <- MGnifyR::getResult(ids)

# Merge datasets
mae <- addMGnify(tse, mae)

# Get data from HoloFood database
mae <- HoloFoodR::getResult(ids)

# Get data from MGnify database
tse <- MGnifyR::getResult(ids)

# Merge datasets
mae <- addMGnify(tse, mae)

print(mae)
A MultiAssayExperiment object of 2 listed
 experiments with user-defined names and respective classes.
 Containing an ExperimentList class object of length 2:
 [1] microbiota: TreeSummarizedExperiment with 262 rows and 40 columns
 [2] metabolites: TreeSummarizedExperiment with 38 rows and 40 columns
Functionality:
 experiments() - obtain the ExperimentList instance
 colData() - the primary/phenotype DataFrame
 sampleMap() - the sample coordination DataFrame
 `$`, `[`, `[[` - extract colData columns, subset, or experiment
 *Format() - convert into a long or wide DataFrame
 assays() - convert ExperimentList to a SimpleList of matrices
 exportClass() - save data to flat files

colData(mae)
DataFrame with 40 rows and 5 columns
         Sample Animal_id        Site Treatment_group Animal_type
    <character>  <factor> <character>        <factor> <character>
C1           C1         1       Cecum               2     chicken
C2           C2         2       Cecum               2     chicken
C3           C3         3       Cecum               2     chicken
C4           C4         4       Cecum               2     chicken
C5           C5         5       Cecum               2     chicken
...         ...       ...         ...             ...         ...
C36         C36        36       Cecum               1     chicken
C37         C37        37       Cecum               1     chicken
C38         C38        38       Cecum               1     chicken
C39         C39        39       Cecum               1     chicken
C40         C40        40       Cecum               1     chicken

library(mia)
library(miaViz)

plotAbundance(mae[["microbiota"]], rank = "Phylum")

# Calculate diversity within sample
mae[["microbiota"]] <- addAlpha(mae[["microbiota"]])

# Calculate diversity within sample
mae[["microbiota"]] <- addAlpha(mae[["microbiota"]])

# Visualize them
plotBoxplot(mae[["microbiota"]],
    col.var = "shannon_diversity", x = "Treatment_group")

# Run PCA
mae[["microbiota"]] <- runPCA(mae[["microbiota"]])

# Run PCA
mae[["microbiota"]] <- runPCA(mae[["microbiota"]])

# Visualize PCA
plotReducedDim(mae[["microbiota"]], "PCA")

plotLoadings(mae[["microbiota"]])

library(MOFA2)

model <- run_mofa(mae)

plot_variance_explained(model)

plot_top_weights(model)

Screenshot from miaDash.

Screenshot from OMA.

Thank you for your time!

FindingPheno logo.

Orchestrating Microbiome Analysis online book

References

Huber, W., V. J. Carey, R. Gentleman, S. Anders, M. Carlson, B. S. Carvalho, H. C. Bravo, et al. 2015. Orchestrating High-Throughput Genomic Analysis with Bioconductor.” Nature Methods 12 (2): 115–21. http://www.nature.com/nmeth/journal/v12/n2/full/nmeth.3252.html.